public mcidade
if pcount() = 0
   marca = .f.
else
   marca = .t.
endif
sele clientes
  declare cabeca[16], estrutura[16]
  limpa(3,0,24,80,cor,.f.)
  limpa(3,0,23,79,cor,.t.)
  set order to 2
  set filter to
  go top
  cabeca[1]  = 'CODIGO'        ; estrutura[01] = fiel(01)
  cabeca[2]  = 'NOME'          ; estrutura[02] = fiel(02)
  cabeca[3]  = 'ENDERECO'      ; estrutura[03] = fiel(03)
  cabeca[4]  = 'CIDADE'        ; estrutura[04] = fiel(04)
  cabeca[5]  = 'UF'            ; estrutura[05] = fiel(05)
  cabeca[6]  = 'CEP'           ; estrutura[06] = fiel(06)
  cabeca[7]  = 'FONE-1'        ; estrutura[07] = fiel(07)
  cabeca[8]  = 'FONE-2'        ; estrutura[08] = fiel(08)
  cabeca[9]  = 'FAX'           ; estrutura[09] = fiel(09)
  cabeca[10] = 'C.G.C.'        ; estrutura[10] = fiel(10)
  cabeca[11] = 'INSCRICAO'     ; estrutura[11] = fiel(11)
  cabeca[12] = 'OCUPACAO'      ; estrutura[12] = fiel(12)
  cabeca[13] = 'ESPECIALIDADE' ; estrutura[13] = fiel(13)
  cabeca[14] = 'CONTATO'       ; estrutura[14] = fiel(14)
  cabeca[15] = 'NASCTO'        ; estrutura[15] = fiel(15)
  cabeca[16] = 'SALDO'         ; estrutura[16] = fiel(16)
  menu(24,0,' Inclui ',2,1)
  menu(24,8,'Altera ',1,1)
  menu(24,15,'Exclui ',1,1)
  menu(24,22,'Filtro ',1,1)
  menu(24,29,'Procura ',1,1)
  menu(24,37,'Relatorio ',1,1)
  menu(24,60,'Etiquetas ',2,1)
  menu(24,72,'Esc-Sai ',1,3)
  dbedit(4,1,22,78,estrutura,'cli100','@X',cabeca,.T.)
  set filter to
  set order to 1
retu

function cli100(modo,coluna)
if empresa = ' '
   @ 3,60 say 'AMBAS        ' color 'r/b'
elseif empresa = 'A'
   @ 3,60 say 'ADMINISTRACAO' color 'w/r'
else
   @ 3,60 say 'SEGURANCA    ' color 'w/b'
endif
if ativo   = 'I'
   @ 3,70 say 'INATIVO' color 'r*/Wb'
else                 
   @ 3,70 say '       '                    
endif
set cursor on
if modo = 0 .or. modo = 3
   retu(1)
endif
tecla = lastkey()
do case
   case tecla = 5 .and. modo = 1

    mensa(10,'Inicio do arquivo ',2)
    retu(2)

   case tecla = 24 .and. modo = 2

    mensa(10,' Final do arquivo ',2)
    retu(2)

   case tecla = 27 .and. marca = .f.

    retu(0)

   case tecla = 13 .and. marca = .t.

    retu(0)

  case tecla = 73 .or. tecla = 105

    while .t.
     mcnpj = space(14)
     sele clientes
     sombra(8,5,22,77,'Inclusao')
     @ 11,7 say 'C.N.P.J. :' get mcnpj pict '99999999999999'
     read                                                        
     if empty(mcnpj)
        retu(2)
     endif
     seek 9999999
     inicializa()
     mcodigo = ccodigo()
     mcgc    = mcnpj
     @ 10,7 say 'Codigo   : ' + strzero(mcodigo,5)
     telacli()
     read
     if confirma(18,60,' 1 - Confirma ',' 2 - Cancela  ')
        appe blank
        if inclusao()
           grava()
           unlock
        endif
     endif
   enddo
   set order to 2
   retu(2)

   case tecla = 65 .or. tecla = 97

     sele 1
     mcodigo = codigo 
     inicializa()
     sombra(8,5,22,77,'Alteracao')
     @ 10,7 say 'Codigo   : ' + strzero(codigo,5)
     telacli()
     read
     if muf = 'DF'
        mmunicipio = '5300108'
     endif
     if confirma(18,60,' 1 - Confirma ',' 2 - Cancela  ')
        if alteracao()
           grava()
           unlock
        endif
     endif

   retu(2)

   case tecla = 69 .or. tecla = 101

     sombra(8,5,22,77,'Exclusao')
     mcodigo = codigo
     @ 10,7 say 'Codigo   : ' + strzero(codigo,5)
     @ 11,7 say 'Nome     : ' + nome
     sele clientes
     inicializa()
     telacli()
     clear gets
     if .not. confirma(18,55,' 1 - Nao exclui ',' 2 - Exclui     ')
        if alteracao()
           dele
           skip
           unlock
        endif
     endif

   retu(2)

   case tecla = 82 .or. tecla = 114

   if .not. impressora()
      retu(2)
   endif
   sombra(8,5,22,77,'Relatorio','Esc-Cancela')
   mativo := mempresa := ' '
   @ 10,8 say 'Seguranca/Administracao :' get mempresa pict '!' valid mativo $ ' SA'
   @ 11,8 say 'Ativos/Inativos         :' get mativo   pict '!' valid mativo $ 'AI'
   read
   if lastkey() = 27
       retu(2)
   endif
   go top
   titulo = .t. ; pag = 1
   sele clientes
   go top
    while .not. eof()
      if mempresa = 'S' .and. empresa = 'A'
         skip
         loop
      endif
      if mempresa = 'A' .and. empresa = 'S'
         skip
         loop
      endif
      if mativo # ativo
         skip
         loop
      endif
      set devi to screen
      @ 10,7 say 'Codigo : ' + strzero(codigo,5) + ' ' + nome
      set devi to printer
      if titulo
         tit_rela('C L I E N T E S - ' + mempresa + mativo,pag)
         titulo = .f.
      endif
      @ prow()+1,2 say 'Cliente  : ' + strzero(codigo,6) + ' ' + nome
      @ prow()+1,2 say 'Endereco : ' + endereco 
      @ prow()+1,2 say 'Cidade   : ' + cidade + '      UF : ' + uf + '       CEP : ' + trans(cep,'@R 99.999-999')
      @ prow()+1,2 say 'Fone-1   : ' + trans(fone1,'@R 999-999-9999') + '      Fone-2 : ' + trans(fone2,'@R 999-999-9999') + '      FAX : ' + trans(fax,'@R 999-999-9999')
      @ prow()+1,2 say 'C.G.C.   : ' + trans(cgc,'@R 99.999.999/9999-99') + '              Estadual : ' + inscricao 
      @ prow()+1,2 say 'E-mail   : ' + email
      @ prow()+1,2 say 'Contato  : ' + contato
      @ prow()+1,2 say ''
      skip
      if prow() > 55
         eject
         titulo = .t.
         pag+=1
      endif
    enddo
    eject
    set devi to screen
    sele clientes
    set filter to
    retu(2)
                 

   case tecla = 80 .or. tecla = 112

    sombra(10,6,20,77,'Digite a expressao')

    set softseek on
    if coluna = 1
       mcodigo = 0
       @ 13,8 say 'Codigo :' get mcodigo pict '99999'
       read
       set order to 1
       seek mcodigo
    else
       mnome = space(40)
       @ 12,8 say 'Nome   :' get mnome   pict '@!'
       read
       seek mnome
    endif
    set order to 2
    retu(2)

   case tecla = 84 .or. tecla = 116

   if .not. impressora()
      retu(2)
   endif
   sombra(10,6,20,77,'Etiquetas','Esc-Cancela')
   mok = .f.
   sele clientes
   go top
   while .not. eof() .and. esc()
    @ 13,8 say 'Cliente : ' + strzero(codigo,6) + ' ' + nome
    set devi to printer
    @ prow()+2,2 say nome
    @ prow()  ,2 say nome
    @ prow()+2,2 say endereco
    @ prow()+1,2 say trans(cep,'@R 99.999-999') + ' ' + alltrim(cidade) + ' - ' + uf 
    @ prow()+4,2 say ''
    skip
    set devi to screen
    if .not. mok
       skip -1
       if confirma(16,56,' 1 - Ajustado ',' 2 - Ajustar  ')
          mok = .t.
       endif
    endif
  enddo
  retu(2)

  otherwise

    retu(1)

endcase

function telacli()
mcodpais   = '1050'
     @ 11,7  say 'C.N.P.J. : ' + cgc   
     @ 11,44 say 'Inscricao :' get minscricao
     @ 12,7  say 'Nome     :' get mnome pict '@!'
     @ 13,7  say 'Endereco :' get mendereco pict '@!'
     @ 14,7  say 'Cidade   :' get mcidade pict '@!'
     @ 14,51 say 'UF :' get muf pict '@!'
     @ 14,60 say 'CEP :' get mcep pict '@R 99.999-999'
     @ 15,7  say 'Fone-1   :' get mfone1 pict '@X'
     @ 15,33 say 'Fone-2 :' get mfone2 pict '@X'                 
     @ 15,58 say 'Fax :' get mfax pict '@X'                      
     @ 16,7  say 'Contato  :' get mcontato pict '@!'
     @ 17,7  say 'E-mail   :' get memail
     @ 18,7  say 'Empresa  :' get mempresa pict '!' valid mempresa $ 'SA '
     @ 18,20 say 'Ativo :' get mativo pict '!' valid mativo  $ 'AI'
     @ 18,30 say 'Publico :' get mpublico pict '!' valid mpublico  $ 'SN'
     @ 18,43 say 'Boleto :' get mboleto  pict '!' valid mboleto    $ 'SN'
     @ 18,55 say 'GPS :' get mgps        pict '!' valid mgps       $ 'SN'
     @ 18,64 say 'Portaria :' get mportaria pict '!' valid mportaria  $ 'SN'
     @ 19,7  say 'I. Renda :' get mir   pict '99.99'
     @ 19,26 say 'CSSL   :' get mcs     pict '99.99'
     @ 19,44 say 'COFINS :' get mcofins pict '99.99'
     @ 19,62 say 'PIS    :' get mpis    pict '99.99'
     @ 20,7  say 'Retem ISS :' get mretiss pict '!' valid mretiss $ 'SN '
     @ 20,22 say 'Pais :' get mcodpais pict '@!'
     @ 20,34 say 'IBGE :' get mcodibge pict '@!'                         
     @ 20,47 say 'Municipio :' get mmunicipio pict '9999999'                         
     @ 20,68 say 'Tipo :' get mtipo valid validatipo(mtipo)
     @ 21,7  say 'Centro Custo-1 :' get mccusto  pict '!!!'
     @ 21,56 say 'Centro Custo-2 :' get mccusto1 pict '!!!'
retu


function ccodigo()
sele 1
set order to 1
go top
mcodigo=1
do while .not. eof()
   if mcodigo=codigo
      mcodigo+=1
      skip
   else 
      exit
   endif
enddo
retu mcodigo


function validatipo(mtipo)
local tgeral
if mtipo < 1 .or. mtipo > 8
  tgeral  = savescreen(0,0,24,80)
  sombra(10,14,20,48,'Tabela de Tipo de Empresas','')
  @ 12,16 say '1 - Orgao Publico Federal     '
  @ 13,16 say '2 - Orgao Publico Estadual    '
  @ 14,16 say '3 - Orgao Publico Municipal   '
  @ 15,16 say '4 - Empresa Publica Federal   '
  @ 16,16 say '5 - Empresa Publica Estadual  '
  @ 17,16 say '6 - Empresa Publica Municipal '
  @ 18,16 say '7 - Empresa Privada           '
  @ 19,16 say '8 - Sociedade Cooperativa     '
  inkey(0)
  restscreen(0,0,24,80,tgeral)
  retu .f.
else 
  retu .t.
endif









